package gui;

import gestionBDD.extractionBDD;
import gestionBDD.requetesAlbum;
import gestionBDD.requetesContient;
import interne.Album;
import interne.Contient;

import com.trolltech.qt.gui.*;
import java.sql.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class fenetreAlbumEdition extends QWidget {

	Album album ;

	private QLineEdit titreLineEdit ;
	private QLineEdit soustitreLineEdit ;
    private QCheckBox partageBox ;
    
    private QLineEdit prefaceLineEdit ;
    private QLineEdit postfaceLineEdit;
    private QComboBox couvertureBox ;
	
	public fenetreAlbumEdition(Album a) throws SQLException {
		
		setAlbum(a) ;
		
        /** Coordonnées' GroupBox' **/
        QGroupBox albumGroup = new QGroupBox(tr("Edition des informations de l'album :"));
 
        /* Nom Line Edit with Label */
        QLabel titreLabel = new QLabel(tr("Titre :"));
        titreLineEdit = new QLineEdit(a.getTitreAlbum());
        
        /* Prénom LineEdit with Label */
        QLabel soustitreLabel = new QLabel(tr("Sous-titre :"));
        soustitreLineEdit = new QLineEdit(a.getSousTitre());

        
        /* Partage Checkbox */
        partageBox = new QCheckBox("Partagé");
        partageBox.setChecked(a.getPartage()) ;
        
        /* Login's Layout */
        QGridLayout albumLayout = new QGridLayout();
        albumLayout.addWidget(titreLabel, 0, 0);
        albumLayout.addWidget(titreLineEdit, 0, 1);
        albumLayout.addWidget(soustitreLabel, 1, 0);
        albumLayout.addWidget(soustitreLineEdit, 1, 1);
        albumLayout.addWidget(partageBox, 2, 1);
        albumGroup.setLayout(albumLayout);  
        
        /** Coordonnées' GroupBox' **/
        QGroupBox livreGroup = new QGroupBox(tr("Pour faire un livre :"));
        QGridLayout livreLayout = new QGridLayout();
        
        /* Nom Line Edit with Label */
        QLabel prefaceLabel = new QLabel(tr("Préface :"));
        prefaceLineEdit = new QLineEdit(a.getPreface());
        
        /* Prénom LineEdit with Label */
        QLabel postfaceLabel = new QLabel(tr("Postface :"));
        postfaceLineEdit = new QLineEdit(a.getPostface());
        
        /* Prénom LineEdit with Label */
        QLabel couvertureLabel = new QLabel(tr("Couverture (aucune si album) :"));

        couvertureBox = new QComboBox();
        Contient couverture ;
        System.out.println(a.getCouverture());
		if (a.getCouverture() != null && a.getCouverture() != 0) {
        	couverture = requetesContient.trouverAvecId(new Contient(a.getCouverture())) ;
		    couvertureBox.addItem(couverture.getTitreImage() + " / " + couverture.getIdContient()) ;
		}
		couvertureBox.addItem("Aucune");

	    List<Contient> listePhoto = new ArrayList<Contient>();
	    listePhoto = extractionBDD.extrairePhotos(album);
		Iterator<Contient> ite = listePhoto.iterator();
		while (ite.hasNext()) {
		    Contient photo = ite.next();
		    couvertureBox.addItem(photo.getTitreImage() + " / " + photo.getIdContient()) ;
		}

        livreLayout.addWidget(prefaceLabel, 0, 0);
        livreLayout.addWidget(prefaceLineEdit, 0, 1);
        livreLayout.addWidget(postfaceLabel, 1, 0);
        livreLayout.addWidget(postfaceLineEdit, 1, 1);
        livreLayout.addWidget(couvertureLabel, 2, 0);
        livreLayout.addWidget(couvertureBox, 2, 1);
        livreGroup.setLayout(livreLayout);
        
        /* Dialog Button Box */
        QDialogButtonBox boutonOk = new QDialogButtonBox();
        boutonOk.addButton(QDialogButtonBox.StandardButton.Ok);
        boutonOk.clicked.connect(this, "updateAlbum()");
        
        // Dialog Layout
        QGridLayout layout = new QGridLayout();
        layout.addWidget(albumGroup, 0, 0);
        layout.addWidget(livreGroup, 1, 0);
        layout.addWidget(boutonOk, 2, 0);
        setWindowTitle(tr("Editer l'album"));
        setLayout(layout);
	}
	
	public void updateAlbum() throws SQLException {
		Album a = new Album(album.getIdAlbum(), album.getIdClient(), titreLineEdit.text(), soustitreLineEdit.text(), partageBox.isChecked()) ;
		requetesAlbum.modifierAlbum(a) ;
		if (!couvertureBox.currentText().equals("Aucune")) {
			a.setPreface(prefaceLineEdit.text()) ;
			a.setPostface(postfaceLineEdit.text()) ;
			a.setTitreAlbum(soustitreLineEdit.text()+"*");
			String temp[] = couvertureBox.currentText().split(" / ");
			a.setCouverture(Integer.parseInt(temp[1])) ;
		}
		else {
			a.setPreface(null) ;
			a.setPostface(null) ;
			a.setCouverture(null) ;
		}
		requetesAlbum.faireLivre(a) ;
		this.hide();
	}

	public Album getAlbum() {
		return album;
	}

	public void setAlbum(Album album) {
		this.album = album;
	}
	
}
